﻿#include "GameView.h"
void GameView() {
	gameState currentState = HOME_PAGE;  // 初始状态为游戏主界面
	bool isRun = true;               // 游戏是否运行
	Init();  // 初始化游戏数据
	while (isRun) //循环控制游戏
	{
		AutoBGM();
		ExMessage msg = { 0 };
		peekmessage(&msg, EX_KEY);
		switch (currentState) { //根据定义的 枚举类型 currentState判断执行的游戏执行操作
		case HOME_PAGE:
			currentState = GameHomePage(isRun);  // 显示游戏主界面
			break;
		case GAME_PLOTBG:
			GamePlotBG();  // 显示剧情背景
			currentState = GAME_PLOT;  // 显示剧情介绍
			break;
		case GAME_PLOT:
			GamePlot();  // 显示剧情介绍
			currentState = GAME_PLAYING;  // 进入游戏
			break;
		case GAME_PLAYING:
			Draw();  // 绘制地图和角色信息
			GameDetect();  // 处理角色操作
			if (msg.vkcode == 'Z') {  //按下 Z 键暂停游戏
				AutoSound();
				currentState = GAME_PAUSE;
			}
			if (msg.vkcode == 'Q') {  //按下 Q 键唤出怪物手册
				AutoSound();
				currentState = GAME_MANUAL;
			}
			if (IsWin(level) == 1 || IsWin(level) == 2) {
				currentState = GAME_SETTLE;  // 进入胜利界面
			}
			break;
		case GAME_PAUSE:
			currentState = GamePause();  // 显示暂停界面
			break;
		case GAME_MANUAL:
			currentState = DrawManual(); // 返回游戏界面
			break;
		case GAME_SETTING:
			GameSet();  // 显示游戏设置界面
			currentState = HOME_PAGE;  // 返回主界面
			break;
		case GAME_INSTRUCTION:
			GameState();  // 显示游戏说明界面
			currentState = HOME_PAGE;  //如果退出表明 返回主界面
			break;
		case GAME_SETTLE:
			currentState = HOME_PAGE;  // 返回主界面
			Init();//完成一次游戏需要进行数据初始化
			break;
		}
	}
}